
<!doctype html>
<html lang="en" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
        <meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface">
      
      
        <meta name="author" content="Hieromon Ikasamo">
      
      
        <link rel="canonical" href="https://Hieromon.github.io/AutoConnect/faq.html">
      
      
        <link rel="prev" href="changelabel.html">
      
      
        <link rel="next" href="changelog.html">
      
      <link rel="icon" href="assets/images/favicon.png">
      <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.9">
    
    
      
        <title>FAQ - AutoConnect for ESP8266/ESP32</title>
      
    
    
      <link rel="stylesheet" href="assets/stylesheets/main.0d440cfe.min.css">
      
        
        <link rel="stylesheet" href="assets/stylesheets/palette.2505c338.min.css">
      
      

    
    
    
      
        
        
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
      
    
    
      <link rel="stylesheet" href="css/paragraph.css">
    
      <link rel="stylesheet" href="css/extra.css">
    
      <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.14.0/css/all.css">
    
    <script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
    
      
  


  
  


  <script id="__analytics">function __md_analytics(){function n(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],n("js",new Date),n("config","G-EHK8XV10VE"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){this.value&&n("event","search",{search_term:this.value})}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");n("event","feedback",{page:t,data:e}),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){n("config","G-EHK8XV10VE",{page_path:e.pathname})})});var e=document.createElement("script");e.async=!0,e.src="https://www.googletagmanager.com/gtag/js?id=G-EHK8XV10VE",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script>

  
    <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
  

    
    
    
  </head>
  
  
    
    
    
    
    
    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
  
    
    
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#after-connected-autoconnect-menu-performs-but-no-happens" class="md-skip">
          Skip to content
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
    
      

<header class="md-header" data-md-component="header">
  <nav class="md-header__inner md-grid" aria-label="Header">
    <a href="index.html" title="AutoConnect for ESP8266/ESP32" class="md-header__button md-logo" aria-label="AutoConnect for ESP8266/ESP32" data-md-component="logo">
      
  <img src="images/arduino-logo.svg" alt="logo">

    </a>
    <label class="md-header__button md-icon" for="__drawer">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
    </label>
    <div class="md-header__title" data-md-component="header-title">
      <div class="md-header__ellipsis">
        <div class="md-header__topic">
          <span class="md-ellipsis">
            AutoConnect for ESP8266/ESP32
          </span>
        </div>
        <div class="md-header__topic" data-md-component="header-topic">
          <span class="md-ellipsis">
            
              FAQ
            
          </span>
        </div>
      </div>
    </div>
    
    
    
      <label class="md-header__button md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
      </label>
      <div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
      <label class="md-search__icon md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
      </label>
      <nav class="md-search__options" aria-label="Search">
        
        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
        </button>
      </nav>
      
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            Initializing search
          </div>
          <ol class="md-search-result__list" role="presentation"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
    
    
      <div class="md-header__source">
        <a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  </div>
  <div class="md-source__repository">
    Hieromon/AutoConnect
  </div>
</a>
      </div>
    
  </nav>
  
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
          
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              
              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    


<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href="index.html" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo" aria-label="AutoConnect for ESP8266/ESP32" data-md-component="logo">
      
  <img src="images/arduino-logo.svg" alt="logo">

    </a>
    AutoConnect for ESP8266/ESP32
  </label>
  
    <div class="md-nav__source">
      <a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
  </div>
  <div class="md-source__repository">
    Hieromon/AutoConnect
  </div>
</a>
    </div>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="index.html" class="md-nav__link">
        Overview
      </a>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="gettingstarted.html" class="md-nav__link">
        Getting started
      </a>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="menu.html" class="md-nav__link">
        AutoConnect menu
      </a>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="basicusage.html" class="md-nav__link">
        Basic usage
      </a>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
      
      
      
        <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
          Advanced usage
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_5">
          <span class="md-nav__icon md-icon"></span>
          Advanced usage
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="advancedusage.html" class="md-nav__link">
        Advanced usage
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adconnection.html" class="md-nav__link">
        AutoConnect WiFi connection control
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adcpcontrol.html" class="md-nav__link">
        Captive portal control
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adnetwork.html" class="md-nav__link">
        Settings and controls for network and WiFi
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adauthentication.html" class="md-nav__link">
        Authentication settings
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adcredential.html" class="md-nav__link">
        Credential accesses
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adexterior.html" class="md-nav__link">
        Customizing page appearance
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="adothers.html" class="md-nav__link">
        Other operation settings and controls
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
      
      
      
        <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
          Custom Web pages
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_6">
          <span class="md-nav__icon md-icon"></span>
          Custom Web pages
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="acintro.html" class="md-nav__link">
        Custom Web pages with AutoConnect
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="acelements.html" class="md-nav__link">
        AutoConnectElements
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="acjson.html" class="md-nav__link">
        Custom Web pages with JSON
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="achandling.html" class="md-nav__link">
        Handling the custom Web pages
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="acinteract.html" class="md-nav__link">
        Interact between Sketch and AutoConnectElements
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
      
      
      
        <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
          OTA Updates
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_7">
          <span class="md-nav__icon md-icon"></span>
          OTA Updates
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="otaupdate.html" class="md-nav__link">
        OTA Updates
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="otabrowser.html" class="md-nav__link">
        OTA via Web Browser
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="otaserver.html" class="md-nav__link">
        OTA using Update Server
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="filesystem.html" class="md-nav__link">
        Using Filesystem
      </a>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
      
      
      
        <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
          Library APIs
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_9">
          <span class="md-nav__icon md-icon"></span>
          Library APIs
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="api.html" class="md-nav__link">
        AutoConnect API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="apiaux.html" class="md-nav__link">
        AutoConnectAux API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="apiconfig.html" class="md-nav__link">
        AutoConnectConfig API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="apielements.html" class="md-nav__link">
        AutoConnectElements API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="apiupdate.html" class="md-nav__link">
        AutoConnectUpdate API
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="apiextra.html" class="md-nav__link">
        Something extra
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
      
      
      
        <label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
          Examples
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_10">
          <span class="md-nav__icon md-icon"></span>
          Examples
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="howtoembed.html" class="md-nav__link">
        How to embed
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="datatips.html" class="md-nav__link">
        Tips for data conversion
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="menuize.html" class="md-nav__link">
        Attach the menus
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="wojson.html" class="md-nav__link">
        Custom Web pages w/o JSON
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="esp32cam.html" class="md-nav__link">
        Works with ESP32-CAM
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_11" >
      
      
      
        <label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
          Appendix
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_11">
          <span class="md-nav__icon md-icon"></span>
          Appendix
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="lsbegin.html" class="md-nav__link">
        Inside AutoConnect::begin
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="credit.html" class="md-nav__link">
        Saved credentials access
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="acupload.html" class="md-nav__link">
        File upload handler
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="colorized.html" class="md-nav__link">
        Custom colorized
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="changelabel.html" class="md-nav__link">
        Change label text
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
    
  
  
    <li class="md-nav__item md-nav__item--active">
      
      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
      
      
      
        <label class="md-nav__link md-nav__link--active" for="__toc">
          FAQ
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <a href="faq.html" class="md-nav__link md-nav__link--active">
        FAQ
      </a>
      
        

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#after-connected-autoconnect-menu-performs-but-no-happens" class="md-nav__link">
     After connected, AutoConnect menu performs but no happens.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#after-updating-to-autoconnect-v100-established-aps-disappear-from-open-ssids-with-esp32" class="md-nav__link">
     After updating to AutoConnect v1.0.0, established APs disappear from Open SSIDs with ESP32.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start" class="md-nav__link">
     An esp8266ap as SoftAP was connected but Captive portal does not start.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#autoconnect-web-pages-are-broken" class="md-nav__link">
     AutoConnect Web Pages are broken.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#cannot-automatically-reconnect-to-a-wifi-hotspot" class="md-nav__link">
     Cannot automatically reconnect to a WiFi Hotspot
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#captive-portal-does-not-pop-up" class="md-nav__link">
     Captive portal does not pop up.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#compile-error-due-to-file-system-header-file-not-found" class="md-nav__link">
     Compile error due to File system header file not found
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#compile-error-occurs-due-to-the-text-section-exceeds" class="md-nav__link">
     Compile error occurs due to the text section exceeds
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#compile-error-that-eeprom-was-not-declared-in-this-scope" class="md-nav__link">
     Compile error that 'EEPROM' was not declared in this scope
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#compile-error-that-esphttpupdate-was-not-declared-in-this-scope" class="md-nav__link">
     Compile error that 'ESPhttpUpdate' was not declared in this scope
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#connection-lost-immediately-after-establishment-with-ap" class="md-nav__link">
     Connection lost immediately after establishment with AP
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#data-saved-to-eeprom-is-different-from-my-sketch-wrote" class="md-nav__link">
     Data saved to EEPROM is different from my sketch wrote.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#does-not-appear-esp8266ap-in-smartphone" class="md-nav__link">
     Does not appear esp8266ap in smartphone.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#does-not-response-from-_ac" class="md-nav__link">
     Does not response from /_ac.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#hang-up-after-reset" class="md-nav__link">
     Hang up after Reset?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-can-i-detect-the-captive-portal-starting" class="md-nav__link">
     How can I detect the captive portal starting?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-change-http-port" class="md-nav__link">
     How change HTTP port?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-change-ssid-or-password-in-captive-portal" class="md-nav__link">
     How change SSID or Password in Captive portal?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-do-i-detach-the-ardunojson" class="md-nav__link">
     How do I detach the ArdunoJson?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-erase-the-credentials-saved-in-eeprom" class="md-nav__link">
     How erase the credentials saved in EEPROM?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-locate-the-link-button-to-the-autoconnect-menu" class="md-nav__link">
     How locate the link button to the  AutoConnect menu?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-much-memory-does-autoconnect-consume" class="md-nav__link">
     How much memory does AutoConnect consume?
  </a>
  
    <nav class="md-nav" aria-label=" How much memory does AutoConnect consume?">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#sketch-size" class="md-nav__link">
    Sketch size
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#heap-size" class="md-nav__link">
    Heap size
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-placing-a-style-qualified-autoconnecttext-horizontally" class="md-nav__link">
     How placing a style-qualified AutoConnectText horizontally?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-placing-html-elements-undefined-in-autoconnectelements" class="md-nav__link">
     How placing HTML elements undefined in AutoConnectElements?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#i-cannot-complete-to-wifi-login-from-smartphone" class="md-nav__link">
     I cannot complete to WiFi login from smartphone.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#i-cannot-see-the-custom-web-page" class="md-nav__link">
     I cannot see the custom Web page.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#nvs_open-failed-not_found-occurs" class="md-nav__link">
     nvs_open failed: NOT_FOUND occurs.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#request-handler-not-found-in-webserver" class="md-nav__link">
     Request handler not found in WebServer.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#saved-credentials-are-wrong-or-lost" class="md-nav__link">
     Saved credentials are wrong or lost.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#some-autoconnect-page-is-cut-off" class="md-nav__link">
     Some AutoConnect page is cut off.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#submit-element-in-a-custom-web-page-does-not-react" class="md-nav__link">
     Submit element in a custom Web page does not react.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#unable-to-change-any-macro-definitions-by-the-sketch" class="md-nav__link">
     Unable to change any macro definitions by the Sketch.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#unauthorize-error-without-prompting-the-login-dialog" class="md-nav__link">
     Unauthorize error without prompting the login dialog.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#uploaded-bin-via-ota-but-the-sketch-stopped-after-reboot" class="md-nav__link">
     Uploaded BIN via OTA, but the sketch stopped after reboot.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#still-not-stable-with-my-sketch" class="md-nav__link">
     Still, not stable with my sketch.
  </a>
  
    <nav class="md-nav" aria-label=" Still, not stable with my sketch.">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#1-change-wifi-channel" class="md-nav__link">
    1. Change WiFi channel
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#2-change-the-arduino-core-version" class="md-nav__link">
    2. Change the arduino core version
  </a>
  
    <nav class="md-nav" aria-label="2. Change the arduino core version">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#with-esp8266-arduino-core" class="md-nav__link">
    with ESP8266 arduino core
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#with-esp32-arduino-core" class="md-nav__link">
    with ESP32 arduino core
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#3-turn-on-the-debug-log-options" class="md-nav__link">
    3. Turn on the debug log options
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#4-reports-the-issue-to-autoconnect-github-repository" class="md-nav__link">
    4. Reports the issue to AutoConnect Github repository
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
    </ul>
  
</nav>
      
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="changelog.html" class="md-nav__link">
        Change log
      </a>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="license.html" class="md-nav__link">
        License
      </a>
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#after-connected-autoconnect-menu-performs-but-no-happens" class="md-nav__link">
     After connected, AutoConnect menu performs but no happens.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#after-updating-to-autoconnect-v100-established-aps-disappear-from-open-ssids-with-esp32" class="md-nav__link">
     After updating to AutoConnect v1.0.0, established APs disappear from Open SSIDs with ESP32.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start" class="md-nav__link">
     An esp8266ap as SoftAP was connected but Captive portal does not start.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#autoconnect-web-pages-are-broken" class="md-nav__link">
     AutoConnect Web Pages are broken.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#cannot-automatically-reconnect-to-a-wifi-hotspot" class="md-nav__link">
     Cannot automatically reconnect to a WiFi Hotspot
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#captive-portal-does-not-pop-up" class="md-nav__link">
     Captive portal does not pop up.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#compile-error-due-to-file-system-header-file-not-found" class="md-nav__link">
     Compile error due to File system header file not found
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#compile-error-occurs-due-to-the-text-section-exceeds" class="md-nav__link">
     Compile error occurs due to the text section exceeds
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#compile-error-that-eeprom-was-not-declared-in-this-scope" class="md-nav__link">
     Compile error that 'EEPROM' was not declared in this scope
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#compile-error-that-esphttpupdate-was-not-declared-in-this-scope" class="md-nav__link">
     Compile error that 'ESPhttpUpdate' was not declared in this scope
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#connection-lost-immediately-after-establishment-with-ap" class="md-nav__link">
     Connection lost immediately after establishment with AP
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#data-saved-to-eeprom-is-different-from-my-sketch-wrote" class="md-nav__link">
     Data saved to EEPROM is different from my sketch wrote.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#does-not-appear-esp8266ap-in-smartphone" class="md-nav__link">
     Does not appear esp8266ap in smartphone.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#does-not-response-from-_ac" class="md-nav__link">
     Does not response from /_ac.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#hang-up-after-reset" class="md-nav__link">
     Hang up after Reset?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-can-i-detect-the-captive-portal-starting" class="md-nav__link">
     How can I detect the captive portal starting?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-change-http-port" class="md-nav__link">
     How change HTTP port?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-change-ssid-or-password-in-captive-portal" class="md-nav__link">
     How change SSID or Password in Captive portal?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-do-i-detach-the-ardunojson" class="md-nav__link">
     How do I detach the ArdunoJson?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-erase-the-credentials-saved-in-eeprom" class="md-nav__link">
     How erase the credentials saved in EEPROM?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-locate-the-link-button-to-the-autoconnect-menu" class="md-nav__link">
     How locate the link button to the  AutoConnect menu?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-much-memory-does-autoconnect-consume" class="md-nav__link">
     How much memory does AutoConnect consume?
  </a>
  
    <nav class="md-nav" aria-label=" How much memory does AutoConnect consume?">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#sketch-size" class="md-nav__link">
    Sketch size
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#heap-size" class="md-nav__link">
    Heap size
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-placing-a-style-qualified-autoconnecttext-horizontally" class="md-nav__link">
     How placing a style-qualified AutoConnectText horizontally?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#how-placing-html-elements-undefined-in-autoconnectelements" class="md-nav__link">
     How placing HTML elements undefined in AutoConnectElements?
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#i-cannot-complete-to-wifi-login-from-smartphone" class="md-nav__link">
     I cannot complete to WiFi login from smartphone.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#i-cannot-see-the-custom-web-page" class="md-nav__link">
     I cannot see the custom Web page.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#nvs_open-failed-not_found-occurs" class="md-nav__link">
     nvs_open failed: NOT_FOUND occurs.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#request-handler-not-found-in-webserver" class="md-nav__link">
     Request handler not found in WebServer.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#saved-credentials-are-wrong-or-lost" class="md-nav__link">
     Saved credentials are wrong or lost.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#some-autoconnect-page-is-cut-off" class="md-nav__link">
     Some AutoConnect page is cut off.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#submit-element-in-a-custom-web-page-does-not-react" class="md-nav__link">
     Submit element in a custom Web page does not react.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#unable-to-change-any-macro-definitions-by-the-sketch" class="md-nav__link">
     Unable to change any macro definitions by the Sketch.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#unauthorize-error-without-prompting-the-login-dialog" class="md-nav__link">
     Unauthorize error without prompting the login dialog.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#uploaded-bin-via-ota-but-the-sketch-stopped-after-reboot" class="md-nav__link">
     Uploaded BIN via OTA, but the sketch stopped after reboot.
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#still-not-stable-with-my-sketch" class="md-nav__link">
     Still, not stable with my sketch.
  </a>
  
    <nav class="md-nav" aria-label=" Still, not stable with my sketch.">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#1-change-wifi-channel" class="md-nav__link">
    1. Change WiFi channel
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#2-change-the-arduino-core-version" class="md-nav__link">
    2. Change the arduino core version
  </a>
  
    <nav class="md-nav" aria-label="2. Change the arduino core version">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#with-esp8266-arduino-core" class="md-nav__link">
    with ESP8266 arduino core
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#with-esp32-arduino-core" class="md-nav__link">
    with ESP32 arduino core
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#3-turn-on-the-debug-log-options" class="md-nav__link">
    3. Turn on the debug log options
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#4-reports-the-issue-to-autoconnect-github-repository" class="md-nav__link">
    4. Reports the issue to AutoConnect Github repository
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  



  <h1>FAQ</h1>

<h2 id="after-connected-autoconnect-menu-performs-but-no-happens"><i class="fa fa-question-circle"></i> After connected, AutoConnect menu performs but no happens.<a class="headerlink" href="#after-connected-autoconnect-menu-performs-but-no-happens" title="Permanent link">&para;</a></h2>
<p>If you can access the <strong>AutoConnect root path</strong> as <a href="http://ESP8266IPADDRESS/_ac">http://ESP8266IPADDRESS/_ac</a> from browser, probably the Sketch uses <em>ESP8266WebServer::handleClient()</em> without <a href="api.html#handlerequest"><em>AutoConnect::handleRequest()</em></a>.<br />
For AutoConnect menus to work properly, call <a href="api.html#handlerequest"><em>AutoConnect::handleRequest()</em></a> after <em>ESP8266WebServer::handleClient()</em> invoked, or use <a href="api.html#handleclient"><em>AutoConnect::handleClient()</em></a>. <a href="api.html#handleclient"><em>AutoConnect::handleClient()</em></a> is equivalent <em>ESP8266WebServer::handleClient</em> combined <a href="api.html#handlerequest"><em>AutoConnect::handleRequest()</em></a>.</p>
<p>See also the explanation <a href="basicusage.html#esp8266webserverwebserver-hosted-or-parasitic">here</a>.</p>
<h2 id="after-updating-to-autoconnect-v100-established-aps-disappear-from-open-ssids-with-esp32"><i class="fa fa-question-circle"></i> After updating to AutoConnect v1.0.0, established APs disappear from Open SSIDs with ESP32.<a class="headerlink" href="#after-updating-to-autoconnect-v100-established-aps-disappear-from-open-ssids-with-esp32" title="Permanent link">&para;</a></h2>
<p>Since AutoConnect v1.0.0 for ESP32, the storage location in the flash of established credentials has moved from EEPROM to Preferences. After You update AutoConnect to v1.0.0, past credentials saved by v0.9.12 earlier will <em>not be accessible</em> from the AutoConnect menu - <strong>Open SSIDs</strong>. You need to transfer once the stored credentials from the EEPROM area to the Preferences area.</p>
<p>You can migrate the past saved credentials using <a href="https://github.com/Hieromon/AutoConnect/tree/master/examples/CreditMigrate"><strong>CreditMigrate.ino</strong></a> which the examples folder contains.</p>
<div class="admonition info">
<p class="admonition-title">Needs to Arduino core for ESP32 1.0.2 or earlier</p>
<p>EEPROM area with arduino-esp32 core <strong>1.0.3</strong> has moved from <strong>partition</strong> to the <strong>nvs</strong>. CreditMigrate.ino requires arduino-esp32 core <strong>1.0.2</strong> or earlier to migrate saved credentials.</p>
</div>
<h2 id="an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start"><i class="fa fa-question-circle"></i> An esp8266ap as SoftAP was connected but Captive portal does not start.<a class="headerlink" href="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start" title="Permanent link">&para;</a></h2>
<p>Captive portal detection could not be trapped. It is necessary to disconnect and reset ESP8266 to clear memorized connection data in ESP8266. Also, It may be displayed on the smartphone if the connection information of esp8266ap is wrong. In that case, delete the connection information of esp8266ap memorized by the smartphone once.</p>
<h2 id="autoconnect-web-pages-are-broken"><i class="fa fa-question-circle"></i> AutoConnect Web Pages are broken.<a class="headerlink" href="#autoconnect-web-pages-are-broken" title="Permanent link">&para;</a></h2>
<p>When the captive portal opens, AutoConnect's embedded web page may be broken or display an incomplete menu like the one below. This is due to AutoConnect temporarily abandoning HTML generation because the ESP module's heap memory was exhausted. This phenomenon may frequently occur, especially with ESP8266 Arduino core 3.1.0 or later.</p>
<p><img alt="broken page" src="images/broken_html.png" /></p>
<p>ESP8266 Arduino core 3.1.0 or later has increased heap consumption due to the application of Non-OS SDK 3.0.x. This makes the ESP8266 more prone to running out of memory than previous core versions.</p>
<p>To reduce RAM consumption, apply workarounds such as reducing the number of AutoConnectElements placed on the custom web pages, or enabling AutoConnectOTA only when a WiFi connection is established to an access point. For example, the code snippet for enabling OTA when a WiFi connection is established is as follows:</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">AutoConnect portal;</span>
<span style="color: #f8f8f2">AutoConnectConfig config;</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">wifiConnect</span><span style="color: #f8f8f2">(IPAddress</span><span style="color: #f92672">&amp;</span><span style="color: #f8f8f2"> ip) {</span>
<span style="color: #f8f8f2">  Serial.println(</span><span style="color: #e6db74">&quot;WiFi connected:&quot;</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">+</span><span style="color: #f8f8f2"> WiFi.SSID());</span>
<span style="color: #f8f8f2">  Serial.println(</span><span style="color: #e6db74">&quot;IP:&quot;</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">+</span><span style="color: #f8f8f2"> WiFi.localIP().toString());</span>
<span style="background-color: #49483e"><span style="color: #f8f8f2">  config.ota </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> AC_OTA_BUILTIN;</span>
</span><span style="background-color: #49483e"><span style="color: #f8f8f2">  portal.config(config);</span>
</span><span style="color: #f8f8f2">}</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  delay(</span><span style="color: #ae81ff">1000</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">  Serial.begin(</span><span style="color: #ae81ff">115200</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">  Serial.println();</span>

<span style="background-color: #49483e"><span style="color: #f8f8f2">  portal.onConnect(wifiConnect);</span>
</span>
<span style="color: #f8f8f2">  portal.begin();</span>
<span style="color: #f8f8f2">}</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  portal.handleClient();</span>
<span style="color: #f8f8f2">}</span>
</code></pre></div>
<h2 id="cannot-automatically-reconnect-to-a-wifi-hotspot"><i class="fa fa-question-circle"></i> Cannot automatically reconnect to a WiFi Hotspot<a class="headerlink" href="#cannot-automatically-reconnect-to-a-wifi-hotspot" title="Permanent link">&para;</a></h2>
<p>WiFi Hotspot ability using a cell phone has no official designation name, but it is commonly referred to as a mobile hotspot or a Personal Hotspot. Generally, this feature using data communication with your cellular to ensure the connection to the Internet. AutoConnect allows you to connect to a WiFi hotspot that has been temporarily launched as an access point and then stores a credential for establishing a connection in the same way as a regular fixed access point.</p>
<p>However, there's a case where it may not be able to reconnect automatically to a known WiFi hotspot. For security reasons, some device operating systems randomly change the MAC address of the WiFi hotspot at each boot for a hotspot. (Especially iOS14) AutoConnect uses the BSSID to find the known SSID from among WiFi signals being broadcast. (it's the MAC address) This method works if the BSSID that the hotspot originates is fixed, but AutoConnect will not be able to find known SSIDs when it changes.<br />
Consider activating the <a href="adconnection.html#match-with-known-access-points-by-ssid">AUTOCONNECT_APKEY_SSID</a> definition if you want to reconnect automatically to a known WiFi hotspot.</p>
<div class="admonition info">
<p class="admonition-title">Cannot immobilize the MAC address of Personal Hotspot</p>
<p>We may not be able to immobilize the MAC address of Personal Hotspot on iOS14. This specification change seems to be related to the private network connection enhancement of iOS14 devices. I found this change during the testing phase, but it is not the confirmed information. (iOS14 offers an option to immobilize the MAC address as a client device, but there is still no option to immobilize it where the device became a hotspot)</p>
</div>
<h2 id="captive-portal-does-not-pop-up"><i class="fa fa-question-circle"></i> Captive portal does not pop up.<a class="headerlink" href="#captive-portal-does-not-pop-up" title="Permanent link">&para;</a></h2>
<p>If the ESP module is already transparent to the Internet, the device's captive portal screen does not pop up even if <a href="apiconfig.html#retainportal"><strong>AutoConnectConfig::retainPortal</strong></a> is enabled. The captive portal popup may also be misinterpreted as automatically activated when AutoConnect is disconnected from the Internet.</p>
<p>When your device connects to an access point, it determines if it is also transparent to the Internet according to the HTTP response from a specific URL. AutoConnect traps the HTTP request issued by the device and responds with a portal screen for AutoConnect. Then the device automatically pops up the HTML in response. It means the auto-popup when opening a captive portal is a feature your device OS has. In this mechanism, AutoConnect impersonates an internally launched DNS server response to trap HTTP requests for Internet transparency determination.</p>
<p>However, its DNS response disguise is very rough, redirecting all FQDNs that do not end in .local to the SoftAP IP address of the ESP module. The redirect location is <code>/_ac</code>, and the responder for <code>/_ac</code> is AutoConnect. This kind of hack is also available as an <a href="https://github.com/esp8266/Arduino/blob/master/libraries/DNSServer/examples/CaptivePortal/CaptivePortal.ino">example</a> in the Arduino ESP8266/ESP32 DNS server library.</p>
<p>The reason AutoConnect shuts down the DNS server after establishing a connection with a WiFi access point and stops hacking HTTP requests for Internet transparency detection is because AutoConnect can only trap a broad range of DNS requests. After the ESP module connects to the access point, the sketch can access the Internet using the FQDN. To prevent it from interfering with that access, AutoConnect will stop the internally launched DNS. In other words, the only scene that allows automatic pop-ups to lead to the captive portal is when the ESP module is not transparent to the Internet.</p>
<p>Instead, AutoConnect has options to restart the internal DNS server when the ESP module loses WiFi connectivity, allowing the device to auto-pop up a captive portal screen. If the sketch enables <a href="apiconfig.html#retainportal">AutoConnectConfig::retainPotral</a> and <a href="apiconfig.html#autorise">AutoConnectConfig::autoRise</a>, then when the WiFi connection is lost (i.e. <code>WiFi.status() != WL_CONNECTED</code>), AutoConnect will initiate a trap by starting the <strong>SoftAP</strong> and the internal DNS server. At this time, the ESP module will transition to <strong>WIFI_AP_STA</strong> mode. The <a href="api.html#handleclient">AutoConnect::handleClient</a> function performs this restart sequence each time it is called, so the sketch can resume the captive portal automatic pop-up while the <code>loop</code> function is running.</p>
<h2 id="compile-error-due-to-file-system-header-file-not-found"><i class="fa fa-question-circle"></i> Compile error due to File system header file not found<a class="headerlink" href="#compile-error-due-to-file-system-header-file-not-found" title="Permanent link">&para;</a></h2>
<p>In <a href="https://docs.platformio.org/en/latest/">PlatformIO</a>, it may occur compilation error such as the bellows:</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #a6e22e">In file included from C</span><span style="color: #f92672">:</span><span style="color: #e6db74">\Users\&lt;user&gt;\Documents\Arduino\libraries\AutoConnect\src\AutoConnect.h:30:0,</span>
<span style="color: #f8f8f2">                 </span><span style="color: #a6e22e">from src/main.cpp</span><span style="color: #f92672">:</span><span style="color: #e6db74">28:</span>
<span style="color: #a6e22e">C</span><span style="color: #f92672">:</span><span style="color: #e6db74">\Users\&lt;user&gt;\Documents\Arduino\libraries\PageBuilder\src\PageBuilder.h:88:27:</span>
<span style="color: #a6e22e">fatal error</span><span style="color: #f92672">:</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">SPIFFS.h: No such file or directory</span>
</code></pre></div>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #a6e22e">In file included from C</span><span style="color: #f92672">:</span><span style="color: #e6db74">\Users\&lt;user&gt;\Documents\Arduino\libraries\AutoConnect\src\AutoConnect.h:30,</span>
<span style="color: #f8f8f2">                 </span><span style="color: #a6e22e">from src\main.cpp</span><span style="color: #f92672">:</span><span style="color: #e6db74">28:</span>
<span style="color: #a6e22e">C</span><span style="color: #f92672">:</span><span style="color: #e6db74">\Users\&lt;user&gt;\Documents\Arduino\libraries\PageBuilder\src\PageBuilder.h:93:17:</span>
<span style="color: #a6e22e">fatal error</span><span style="color: #f92672">:</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">LittleFS.h: No such file or directory</span>
</code></pre></div>
<p>This compilation error is due to PlatformIO's <a href="https://docs.platformio.org/en/latest/librarymanager/ldf.html?highlight=ldf#library-dependency-finder-ldf">Library Dependency Finder</a> not being able to detect <code>#include</code> with default <a href="https://docs.platformio.org/en/latest/librarymanager/ldf.html#dependency-finder-mode">mode</a> <code>chain</code>. Chain mode does not recursively evaluate <code>.cpp</code> files. However, AutoConnect determines the default file system at compile time, depending on the platform. In order for LDF to detect it correctly, it is necessary to recursively scan <code>#include</code> of the header file, which depends on the file system used.</p>
<p>To avoid compilation errors in PlatformIO, specify <a href="https://docs.platformio.org/en/latest/projectconf/section_env_library.html#lib-ldf-mode"><code>lib_ldf_mode</code></a> in <a href="https://docs.platformio.org/en/latest/projectconf/index.html#platformio-ini-project-configuration-file"><code>platformio.ini</code></a> as follows:</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #66d9ef">[env]</span>
<span style="color: #a6e22e">lib_ldf_mode</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">deep+</span>
</code></pre></div>
<p>You should specify <strong><code>deep+</code></strong> with <a href="https://docs.platformio.org/en/latest/projectconf/section_env_library.html#lib-ldf-mode"><code>lib_ldf_mode</code></a>.</p>
<p>Another option is to explicitly specify the file system to be applied to AutoConnect at build time. The compiler determines the file system to be applied to AutoConnect by preprocessor macro definitions defined in <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h">AutoConnectDefs.h</a>. The directives defined as <code>AC_USE_SPIFFS</code> and <code>AC_USE_LITTLEFS</code> specify that the respective file systems apply. The chapter <a href="filesystem.html">Using Filesystem</a> details how to explicitly specify a file system for AutoConnect in PlatformIO.</p>
<h2 id="compile-error-occurs-due-to-the-text-section-exceeds"><i class="fa fa-question-circle"></i> Compile error occurs due to the text section exceeds<a class="headerlink" href="#compile-error-occurs-due-to-the-text-section-exceeds" title="Permanent link">&para;</a></h2>
<p>When building the sketch, you may receive a compilation error message similar that <em>the text section exceeds the available space on the board</em>. This error occurs with ESP32 arduino core 2.0.0 or later. Since ESP32 arduino core 2.0.0, the object size of the library tends to be oversized, and the AutoConnect object size is also bloated.
And also for some example sketches such as mqttRSSI, the BIN size after linkage does not fit in the default partition scheme.</p>
<p>I'm aware of this issue<sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup> and trying to reduce the size of the AutoConnect object, but for now, changing the partition table at build is the most effective workaround. See <a href="#how-much-memory-does-autoconnect-consume">How much memory does AutoConnect consume?</a> for information on how to change the partition table.</p>
<h2 id="compile-error-that-eeprom-was-not-declared-in-this-scope"><i class="fa fa-question-circle"></i> Compile error that 'EEPROM' was not declared in this scope<a class="headerlink" href="#compile-error-that-eeprom-was-not-declared-in-this-scope" title="Permanent link">&para;</a></h2>
<p>If the user sketch includes the header file as <code>EEPROM.h</code>, this compilation error may occur depending on the order of the <code>#include</code> directives. <code>AutoConnectCredentials.h</code> including in succession linked from <code>AutoConnect.h</code> defines <strong>NO_GLOBAL_EEPROM</strong> internally, so if your sketch includes <code>EEPROM.h</code> after <code>AutoConnect.h</code>, the <strong>EEPROM</strong> global variable will be lost.</p>
<p>If you use EEPROM with your sketch, declare <code>#include &lt;EEPROM.h&gt;</code> in front of <code>#include &lt;AutoConnect.h&gt;</code>.</p>
<h2 id="compile-error-that-esphttpupdate-was-not-declared-in-this-scope"><i class="fa fa-question-circle"></i> Compile error that 'ESPhttpUpdate' was not declared in this scope<a class="headerlink" href="#compile-error-that-esphttpupdate-was-not-declared-in-this-scope" title="Permanent link">&para;</a></h2>
<p>If the user sketch includes the header file as <code>ESP8266httpUpdate.h</code>, this compilation error may occur depending on the order of the <code>#include</code> directives. <code>AutoConnectUpdate.h</code> including in succession linked from <code>AutoConnect.h</code> defines <strong>NO_GLOBAL_HTTPUPDATE</strong> internally, so if your sketch includes <code>ESP8266httpUpdate.h</code> after <code>AutoConnect.h</code>, the <strong>ESPhttpUpdate</strong> global variable will be lost.</p>
<p>You can avoid a compile error in one of two ways:</p>
<ol>
<li>
<p>Disable an AutoConnectUpdate feature if you don't need.</p>
<p>You can disable the AutoConnectUpdate feature by commenting out the <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L47"><strong>AUTOCONNECT_USE_UPDATE</strong></a> macro in the <a href="api.html#defined-macros"><code>AutoConnectDefs.h</code></a> header file.
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #75715e">#define AUTOCONNECT_USE_UPDATE</span>
</code></pre></div></p>
</li>
<li>
<p>Change the order of <code>#include</code> directives.</p>
<p>With the Sketch, <code>#include &lt;ESP8266httpUpdate.h&gt;</code> before <code>#include &lt;AutoConnect.h&gt;</code>.</p>
</li>
</ol>
<h2 id="connection-lost-immediately-after-establishment-with-ap"><i class="fa fa-question-circle"></i> Connection lost immediately after establishment with AP<a class="headerlink" href="#connection-lost-immediately-after-establishment-with-ap" title="Permanent link">&para;</a></h2>
<p>A captive portal is disconnected immediately after the connection establishes with the new AP. This is a known problem of ESP32, and it may occur when the following conditions are satisfied at the same time.</p>
<ul>
<li>SoftAP channel on ESP32 and the connecting AP channel you specified are different. (The default channel of SoftAP is 1.)</li>
<li>NVS had erased by erase_flash causes the connection data lost. The NVS partition has been moved. Never connected to the AP in the past.</li>
<li>There are receivable multiple WiFi signals which are the same SSID with different channels using the WiFi repeater etc. (This condition is loose, it may occur even if there is no WiFi repeater.)</li>
<li>Or the using channel of the AP which established a connection is congested with the radio signal on the same band. (If the channel crowd, connections to known APs may also fail.)</li>
</ul>
<div class="admonition info">
<p class="admonition-title">Other possibilities</p>
<p>The above conditions are not absolute. It results from my investigation, and other conditions may exist.</p>
</div>
<p>To avoid this problem, try <a href="#1-change-wifi-channel">changing the channel</a>.</p>
<p>ESP32 hardware equips only one RF circuitry for WiFi signal. At the AP_STA mode, ESP32 as an AP attempts connect to another AP on another channel while keeping the connection with the station then the channel switching will occur causes the station may be disconnected. But it may not be just a matter of channel switching causes ESP8266 has the same constraints too. It may be a problem with AutoConnect or the arduino core or SDK issue. This problem will persist until a specific solution.</p>
<h2 id="data-saved-to-eeprom-is-different-from-my-sketch-wrote"><i class="fa fa-question-circle"></i> Data saved to EEPROM is different from my sketch wrote.<a class="headerlink" href="#data-saved-to-eeprom-is-different-from-my-sketch-wrote" title="Permanent link">&para;</a></h2>
<p>By default, AutoConnect saves the credentials of the established connection into EEPROM. The credential area of EEPROM used by AutoConnect will conflict with data owned by the user sketch if without measures taken. It will destroy the user sketch data and the data stored in EEPROM by AutoConnect with each other.<br />
You have the following two options to avoid this conflict:</p>
<ul>
<li>
<p>Move the credential saving area of EEPROM.<br />
  You can protect your data from corruption by notifying AutoConnect where to save credentials. Notification of the save location for the credentials uses <a href="apiconfig.html#boundaryoffset">AutoConnectConfig::boundaryOffset</a> option. Refer to the chapter on <a href="adcredential.html#move-the-saving-area-of-eeprom-for-the-credentials">Move the saving area of EEPROM for the credentials</a> for details.</p>
</li>
<li>
<p>Suppresses the automatic save operation of credentials by AutoConnect.<br />
  You can completely stop saving the credentials by AutoConnect. However, if you select this option, you lose the past credentials which were able to connect to the AP. Therefore, the effect of the <a href="adconnection.html#automatic-reconnect">automatic reconnection feature</a> will be lost.<br />
  If you want to stop the automatic saving of the credentials, uses <a href="apiconfig.html#autosave">AutoConnectConfig::autoSave</a> option specifying <strong>AC_SAVECREDENTIAL_NEVER</strong>. Refer to the chapter on <a href="adcredential.html#autosave-credential">Advanced usage</a> for details.</p>
</li>
</ul>
<h2 id="does-not-appear-esp8266ap-in-smartphone"><i class="fa fa-question-circle"></i> Does not appear esp8266ap in smartphone.<a class="headerlink" href="#does-not-appear-esp8266ap-in-smartphone" title="Permanent link">&para;</a></h2>
<p>Maybe it is successfully connected at the <a href="lsbegin.html#autoconnectbegin-logic-sequence"><strong>1<sup>st</sup>-WiFi.begin</strong></a>. ESP8266 remembers the last SSID successfully connected and will use at the next. It means SoftAP will only start up when the first <em>WiFi.begin()</em> fails.</p>
<p>The saved SSID would be cleared by  <em>WiFi.disconnect()</em> with WIFI_STA mode. If you do not want automatic reconnection, you can erase the memorized SSID with the following simple sketch.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #75715e">#include</span><span style="color: #f8f8f2"> </span><span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  delay(</span><span style="color: #ae81ff">1000</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">  Serial.begin(</span><span style="color: #ae81ff">115200</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">  WiFi.mode(WIFI_STA);</span>
<span style="color: #f8f8f2">  delay(</span><span style="color: #ae81ff">100</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">  WiFi.begin();</span>
<span style="color: #f8f8f2">  </span><span style="color: #66d9ef">if</span><span style="color: #f8f8f2"> (WiFi.waitForConnectResult() </span><span style="color: #f92672">==</span><span style="color: #f8f8f2"> WL_CONNECTED) {</span>
<span style="color: #f8f8f2">    WiFi.disconnect();</span>
<span style="color: #f8f8f2">    </span><span style="color: #66d9ef">while</span><span style="color: #f8f8f2"> (WiFi.status() </span><span style="color: #f92672">==</span><span style="color: #f8f8f2"> WL_CONNECTED)</span>
<span style="color: #f8f8f2">      delay(</span><span style="color: #ae81ff">100</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">  }</span>
<span style="color: #f8f8f2">  Serial.println(</span><span style="color: #e6db74">&quot;WiFi disconnected.&quot;</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">}</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  delay(</span><span style="color: #ae81ff">1000</span><span style="color: #f8f8f2">);</span>
<span style="color: #f8f8f2">}</span>
</code></pre></div>
<details class="hint">
<summary>You can interactively check the WiFi state of ESP8266.</summary>
<p>Please try <a href="https://github.com/Hieromon/ESPShaker"><strong>ESPShaker</strong></a>. It is ESP8266 interactive serial command processor.</p>
<p><img src="images/espshaker.gif" /></p>
</details>
<h2 id="does-not-response-from-_ac"><i class="fa fa-question-circle"></i> Does not response from /_ac.<a class="headerlink" href="#does-not-response-from-_ac" title="Permanent link">&para;</a></h2>
<p>Probably <strong>WiFi.begin</strong> failed with the specified SSID. Activating the <a href="adothers.html#debug-print">debug printing</a> will help you to track down the cause.</p>
<h2 id="hang-up-after-reset"><i class="fa fa-question-circle"></i> Hang up after Reset?<a class="headerlink" href="#hang-up-after-reset" title="Permanent link">&para;</a></h2>
<p>If ESP8266 hang up after reset by AutoConnect menu, perhaps manual reset is not yet. Especially if it is not manual reset yet after uploading the Sketch, the boot mode will stay 'Uart Download'. There is some discussion about this on the Github's ESP8266 core: <a href="https://github.com/esp8266/Arduino/issues/1017">https://github.com/esp8266/Arduino/issues/1017</a> <sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup></p>
<p>If you received the following message, the boot mode is still sketch uploaded. It needs to the manual reset once.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">ets</span> <span style="color: #f8f8f2">Jan</span>  <span style="color: #f8f8f2">8</span> <span style="color: #f8f8f2">2013,rst</span> <span style="color: #f8f8f2">cause:2,</span> <span style="color: #f8f8f2">boot</span> <span style="color: #f8f8f2">mode:(1,6)</span> <span style="color: #f8f8f2">or</span> <span style="color: #f8f8f2">(1,7)</span>
<span style="color: #f8f8f2">ets</span> <span style="color: #f8f8f2">Jan</span>  <span style="color: #f8f8f2">8</span> <span style="color: #f8f8f2">2013,rst</span> <span style="color: #f8f8f2">cause:4,</span> <span style="color: #f8f8f2">boot</span> <span style="color: #f8f8f2">mode:(1,6)</span> <span style="color: #f8f8f2">or</span> <span style="color: #f8f8f2">(1,7)</span>
<span style="color: #f8f8f2">wdt</span> <span style="color: #f8f8f2">reset</span>
</code></pre></div>
<p>The correct boot mode for starting the Sketch is <strong>(3, x)</strong>.</p>
<div class="admonition info">
<p class="admonition-title">ESP8266 Boot Messages</p>
<p>It is described by <a href="https://www.espressif.com/en/products/hardware/esp8266ex/resources">ESP8266 Non-OS SDK API Reference</a>, section A.5.</p>
<table>
<thead>
<tr>
<th>Messages</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>rst cause</td>
<td>1: power on<br>2: external reset<br>4: hardware watchdog reset</td>
</tr>
<tr>
<td>boot mode<br>(the first parameter)</td>
<td>1: ESP8266 is in UART-down mode (and downloads firmware into flash).<br>3: ESP8266 is in Flash-boot mode (and boots up from flash).</td>
</tr>
</tbody>
</table>
</div>
<h2 id="how-can-i-detect-the-captive-portal-starting"><i class="fa fa-question-circle"></i> How can I detect the captive portal starting?<a class="headerlink" href="#how-can-i-detect-the-captive-portal-starting" title="Permanent link">&para;</a></h2>
<p>You can use the <a href="api.html#ondetect">AutoConnect::onDetect</a> exit routine. For more details and an implementation example of the onDetect exit routine, refer to the chapter <a href="adcpcontrol.html#captive-portal-start-detection">Captive portal start detection</a>.</p>
<h2 id="how-change-http-port"><i class="fa fa-question-circle"></i> How change HTTP port?<a class="headerlink" href="#how-change-http-port" title="Permanent link">&para;</a></h2>
<p>HTTP port number is defined as a macro in <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L193">AutoConnectDefs.h</a> header file. You can change it directly with several editors and must re-compile.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #75715e">#define AUTOCONNECT_HTTPPORT    80</span>
</code></pre></div>
<h2 id="how-change-ssid-or-password-in-captive-portal"><i class="fa fa-question-circle"></i> How change SSID or Password in Captive portal?<a class="headerlink" href="#how-change-ssid-or-password-in-captive-portal" title="Permanent link">&para;</a></h2>
<p>You can change both by using <a href="apiconfig.html#apid">AutoConnectConfig::apid</a> and <a href="apiconfig.html#psk">AutoConnectConfig::psk</a>. Refer to section <a href="adnetwork.html#change-ssid-and-password-for-softap">Change SSID and Password for SoftAP</a> in <a href="adnetwork.html">Settings and controls for network and WiFi</a>.</p>
<h2 id="how-do-i-detach-the-ardunojson"><i class="fa fa-question-circle"></i> How do I detach the ArdunoJson?<a class="headerlink" href="#how-do-i-detach-the-ardunojson" title="Permanent link">&para;</a></h2>
<p>If you don't use ArduinoJson at all, you can detach it from the library. By detaching ArduinoJson, the binary size after compilation can be reduced. You can implement custom Web pages with your sketches without using ArduinoJson. Its method is described in <a href="wojson.html">Custom Web pages w/o JSON</a>.<br />
To completely remove ArduinoJson at compile-time from the binary, you need to define a special <code>#define</code> directive for it. And if you define the directive, you will not be able to use the <a href="otaserver.html#updates-with-the-update-server">OTA update with the update server</a> feature as well as AutoConnectAux described by JSON.</p>
<p>To exclude ArduinoJson at compile-time, give the following <code>#define</code> directive as a compiler option such as the <a href="https://github.com/arduino/arduino-cli">arduino-cli</a> or <a href="https://platformio.org/">PlatformIO</a>.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #75715e">#define AUTOCONNECT_NOUSE_JSON</span>
</code></pre></div>
<p>For example, add the following description to the <code>[env]</code> section of the <code>platformio.ini</code> file with the <code>build-flags</code>.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #a6e22e">build-flags</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">-DAUTOCONNECT_NOUSE_JSON</span>
</code></pre></div>
<h2 id="how-erase-the-credentials-saved-in-eeprom"><i class="fa fa-question-circle"></i> How erase the credentials saved in EEPROM?<a class="headerlink" href="#how-erase-the-credentials-saved-in-eeprom" title="Permanent link">&para;</a></h2>
<p>Make some sketches for erasing the EEPROM area, or some erasing utility is needed. You can prepare the Sketch to erase the saved credential with <em>AutoConnectCredential</em>. The <em>AutoConnectCrendential</em> class provides the access method to the saved credential in EEPROM and library source file is including it. Refer to <a href="credit.html#saved-credential-in-eeprom">Saved credential access</a> for details.</p>
<div class="admonition hint">
<p class="admonition-title">Hint</p>
<p>With the <a href="https://github.com/Hieromon/ESPShaker"><strong>ESPShaker</strong></a>, you can access EEPROM interactively from the serial monitor, and of course you can erase saved credentials.</p>
</div>
<h2 id="how-locate-the-link-button-to-the-autoconnect-menu"><i class="fa fa-question-circle"></i> How locate the link button to the  AutoConnect menu?<a class="headerlink" href="#how-locate-the-link-button-to-the-autoconnect-menu" title="Permanent link">&para;</a></h2>
<p>Link button to AutoConnect menu can be embedded into Sketch's web page. The root path of the menu is <strong>/_ac</strong> by default and embed the following <code>&lt;a&gt;&lt;/a&gt;</code> tag in the generating HTML.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">a</span> <span style="color: #a6e22e">style</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;background-color:SteelBlue; display:inline-block; padding:7px 13px; text-decoration:none;&quot;</span> <span style="color: #a6e22e">href</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;/_ac&quot;</span><span style="color: #f8f8f2">&gt;</span>MENU<span style="color: #f8f8f2">&lt;/</span><span style="color: #f92672">a</span><span style="color: #f8f8f2">&gt;</span>
</code></pre></div>
<h2 id="how-much-memory-does-autoconnect-consume"><i class="fa fa-question-circle"></i> How much memory does AutoConnect consume?<a class="headerlink" href="#how-much-memory-does-autoconnect-consume" title="Permanent link">&para;</a></h2>
<h3 id="sketch-size">Sketch size<a class="headerlink" href="#sketch-size" title="Permanent link">&para;</a></h3>
<ol>
<li>
<p>For ESP8266<br />
   It increases about 53K bytes compared to the case without AutoConnect. A sketch size of the most simple example introduced in the Getting started is about 330K bytes. (270K byte without AutoConnect)</p>
</li>
<li>
<p>For ESP32<br />
   The BIN size of the sketch grows to over 1M bytes. In the case of a sketch with many custom Web pages, when applying the partition table for the default scheme, the remaining flash size that can be utilized by the user application may be less than 200K bytes. Therefore, it is advisable to resize the partition to make more available space for the application. The ESP32 arduino core has various <a href="https://github.com/espressif/arduino-esp32/tree/master/tools/partitions">partition schemes</a>, and you can choose it according to your Sketch feature.<br />
   You can change the partition scheme from the <strong>Tools &gt; Partition Scheme</strong> menu of Arduino IDE.</p>
</li>
</ol>
<p><img src="images/partition.png"></p>
<div class="admonition hint">
<p class="admonition-title">Change the partition scheme with PlatformIO</p>
<p>Use <code>board_build.partitions</code> directive with <code>platformio.ini</code>.
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #66d9ef">[env:esp32dev]</span>
<span style="color: #a6e22e">board_build.partitions</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">min_spiffs.csv</span>
</code></pre></div>
Details for the <a href="https://docs.platformio.org/en/latest/platforms/espressif32.html#partition-tables">PlatformIO documentation</a>.</p>
</div>
<h3 id="heap-size">Heap size<a class="headerlink" href="#heap-size" title="Permanent link">&para;</a></h3>
<p>It consumes about 2K bytes in the static and about 12K bytes are consumed at the moment when menu executed.</p>
<div class="admonition info">
<p class="admonition-title">Reducing Binary Size</p>
<p>For sketches that do not require OTA feature or Custom Web pages, the build size can be reduced. See <a href="basicusage.html#reducing-binary-size">Reducing Binary Size</a> in <a href="basicusage.html">Basic Usage</a> for details.</p>
</div>
<h2 id="how-placing-a-style-qualified-autoconnecttext-horizontally"><i class="fa fa-question-circle"></i> How placing a style-qualified AutoConnectText horizontally?<a class="headerlink" href="#how-placing-a-style-qualified-autoconnecttext-horizontally" title="Permanent link">&para;</a></h2>
<p>When the <a href="acelements.html#style">style</a> parameter is specified for <a href="acelements.html#autoconnecttext">AutoConnectText</a>, it is always enclosed by the <code>&lt;div&gt;</code> tag, so the element placement direction is vertical and subsequent elements cannot be horizontal. If you want to place an element after AutoConnectText with the style, you can place the AutoConnectText horizontally by specifying the <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/display"><code>display</code></a> CSS property with <code>inline</code> or <code>inline-block</code> in the style value. </p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">{</span>
<span style="color: #f8f8f2">    </span><span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">: </span><span style="color: #e6db74">&quot;text1&quot;</span><span style="color: #f8f8f2">,</span>
<span style="color: #f8f8f2">    </span><span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">: </span><span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
<span style="color: #f8f8f2">    </span><span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">: </span><span style="color: #e6db74">&quot;Hello,&quot;</span><span style="color: #f8f8f2">,</span>
<span style="color: #f8f8f2">    </span><span style="color: #f92672">&quot;style&quot;</span><span style="color: #f8f8f2">: </span><span style="color: #e6db74">&quot;display:inline;color:#f5ad42;font-weight:bold;margin-right:3px&quot;</span>
<span style="color: #f8f8f2">},</span>
<span style="color: #f8f8f2">{</span>
<span style="color: #f8f8f2">    </span><span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">: </span><span style="color: #e6db74">&quot;text2&quot;</span><span style="color: #f8f8f2">,</span>
<span style="color: #f8f8f2">    </span><span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">: </span><span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
<span style="color: #f8f8f2">    </span><span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">: </span><span style="color: #e6db74">&quot;world&quot;</span><span style="color: #f8f8f2">,</span>
<span style="color: #f8f8f2">    </span><span style="color: #f92672">&quot;posterior&quot;</span><span style="color: #f8f8f2">: </span><span style="color: #e6db74">&quot;br&quot;</span>
<span style="color: #f8f8f2">}</span>
</code></pre></div>
<p>See also <a href="acelements.html#post_8">AutoConnectText</a> chapter, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flow_Layout">CSS Flow Layout</a> by <a href="https://developer.mozilla.org/en-US/">MDN</a>.</p>
<h2 id="how-placing-html-elements-undefined-in-autoconnectelements"><i class="fa fa-question-circle"></i> How placing HTML elements undefined in AutoConnectElements?<a class="headerlink" href="#how-placing-html-elements-undefined-in-autoconnectelements" title="Permanent link">&para;</a></h2>
<p><a href="acelements.html#autoconnectelement-a-basic-class-of-elements">AutoConnectElement</a> can be applied in many cases when trying to place HTML elements that are undefined in AutoConnectElemets on custom Web pages. See <a href="achandling.html#place-html-elements-undefined-in-autoconnectelements">Handling the custom Web Pages</a> section.</p>
<h2 id="i-cannot-complete-to-wifi-login-from-smartphone"><i class="fa fa-question-circle"></i> I cannot complete to WiFi login from smartphone.<a class="headerlink" href="#i-cannot-complete-to-wifi-login-from-smartphone" title="Permanent link">&para;</a></h2>
<p>Because AutoConnect does not send a login success response to the captive portal requests from the smartphone. The login success response varies iOS, Android and Windows. By analyzing the request URL of different login success inquiries for each OS, the correct behavior can be implemented, but not yet. Please resets ESP8266 from the AutoConnect menu.</p>
<h2 id="i-cannot-see-the-custom-web-page"><i class="fa fa-question-circle"></i> I cannot see the custom Web page.<a class="headerlink" href="#i-cannot-see-the-custom-web-page" title="Permanent link">&para;</a></h2>
<p>If the Sketch is correct, a JSON syntax error may have occurred. In this case, activate the <a href="faq.html#3-turn-on-the-debug-log-options">AC_DEBUG</a> and rerun. If you take the message of JSON syntax error, the <a href="https://arduinojson.org/v5/assistant/">Json Assistant</a> helps syntax checking. This online tool is provided by the author of ArduinoJson and is most consistent for the AutoConnect. </p>
<h2 id="nvs_open-failed-not_found-occurs"><i class="fa fa-question-circle"></i> nvs_open failed: NOT_FOUND occurs.<a class="headerlink" href="#nvs_open-failed-not_found-occurs" title="Permanent link">&para;</a></h2>
<p>In ESP32, NVS open failure may occur during execution of AutoConnect::begin with the following message on the Serial monitor.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #a6e22e">[E][Preferences.cpp</span><span style="color: #f92672">:</span><span style="color: #e6db74">38] begin(): nvs_open failed: NOT_FOUND</span>
</code></pre></div>
<p>This is not a malfunction and expected behavior. AutoConnect will continue to execute normally.</p>
<p>AutoConnect saves the credentials of the access point to which it was able to connect to the NVS of the ESP32 module as <a href="https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/api/preferences.html#preferences">Preferences</a> instances. The above error occurs when the area keyed for AutoConnect credentials does not exist in NVS. Usually, this error occurs immediately after erasing the ESP32 module flash or when running the AutoConnect sketch for the first time. If the AutoConnect credentials area does not exist in NVS, AutoConnect will automatically allocate it. Therefore, this error can be ignored and will not affect the execution of the sketch.</p>
<h2 id="request-handler-not-found-in-webserver"><i class="fa fa-question-circle"></i> Request handler not found in WebServer.<a class="headerlink" href="#request-handler-not-found-in-webserver" title="Permanent link">&para;</a></h2>
<p>It forms the following message as the most common form.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #a6e22e">request handler not found</span>
</code></pre></div>
<p>In ESP32, the above message has a detailed issuer.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #a6e22e">[WebServer.cpp</span><span style="color: #f92672">:</span><span style="color: #e6db74">649] _handleRequest(): request handler not found</span>
</code></pre></div>
<p>If this message appears just by opening your custom web page or AutoConnect built-in page from a browser, it is probably the browser requesting a <a href="https://en.wikipedia.org/wiki/Favicon">favicon</a> for that html page. Please instead of prematurely assuming that the detection of this message indicates an implementation flaw, identify the URL from which the request originated. You can find it in the AutoConnect trace that outputs to the serial monitor by enabling <a href="adothers.html#debug-print"><code>AC_DEBUG</code></a> macro.</p>
<p>You can probably find the above message in the <code>AC_DEBUG</code> trace log. And if you can find the following trace just before that message, your sketch is working fine.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #a6e22e">[AC] Host</span><span style="color: #f92672">:</span><span style="color: #e6db74">192.168.1.17,/favicon.ico,ignored</span>
</code></pre></div>
<p>It's just the browser asking for a favicon. Of course, your sketch doesn't have a favicon. That's what the "<em>request handler not found</em>" message means.</p>
<p>The <code>AC_DEBUG</code> trace will record URL requests for which no request handler exists. If you find a <code>[AC] Host: IP_ADDRESS, URL, ignored</code> style message in the <code>AC_DEBUG</code> log, the request handler for that URL has not been registered with the WebServer. Even if your sketch has a custom web page with the said URL, it is probably causing a JSON syntax error and failing to deserialize. In such cases, the <a href="https://arduinojson.org/v6/assistant/">ArduinoJson Assistant</a> can be helpful. It will find syntax errors in the JSON description for your custom web page.</p>
<h2 id="saved-credentials-are-wrong-or-lost"><i class="fa fa-question-circle"></i> Saved credentials are wrong or lost.<a class="headerlink" href="#saved-credentials-are-wrong-or-lost" title="Permanent link">&para;</a></h2>
<p>A structure of AutoConnect saved credentials has changed two times throughout enhancement with v1.0.3 and v1.1.0. In particular, due to enhancements in v1.1.0, AutoConnectCredential data structure has lost the backward compatibility with previous versions. You must erase the flash of the ESP module using the esptool completely to save the credentials correctly with v1.1.0.
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">esptool</span> <span style="color: #f8f8f2">-c</span> <span style="color: #f8f8f2">esp8266</span> <span style="color: #f8f8f2">(or</span> <span style="color: #f8f8f2">esp32)</span> <span style="color: #f8f8f2">-p</span> <span style="color: #66d9ef">[COM_PORT]</span> <span style="color: #f8f8f2">erase_flash</span>
</code></pre></div></p>
<h2 id="some-autoconnect-page-is-cut-off"><i class="fa fa-question-circle"></i> Some AutoConnect page is cut off.<a class="headerlink" href="#some-autoconnect-page-is-cut-off" title="Permanent link">&para;</a></h2>
<p>It may be two possibilities as follows:</p>
<ol>
<li>Packet loss during transmission due to a too weak WiFi signal.</li>
<li>Heap is insufficient memory. AutoConnect entrusts HTML generation to PageBuilder that makes heavy use the String::concatenate function and causes memory fragmentation. This is a structural problem with PageBuilder, but it is difficult to solve immediately.</li>
</ol>
<p>If this issue produces with your sketch, Reloading the page may recover.<br />
Also, you can check the memory running out status by rebuilding the Sketch with <a href="#3-turn-on-the-debug-log-options">PageBuilder's debug log option</a> turned on.</p>
<p>If the heap memory is insufficient, the following message is displayed on the serial console.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #66d9ef">[PB]</span> <span style="color: #f8f8f2">Failed</span> <span style="color: #f8f8f2">building,</span> <span style="color: #f8f8f2">free</span> <span style="color: #f8f8f2">heap:&lt;Size</span> <span style="color: #f8f8f2">of</span> <span style="color: #f8f8f2">free</span> <span style="color: #f8f8f2">heap&gt;</span>
</code></pre></div>
<h2 id="submit-element-in-a-custom-web-page-does-not-react"><i class="fa fa-question-circle"></i> Submit element in a custom Web page does not react.<a class="headerlink" href="#submit-element-in-a-custom-web-page-does-not-react" title="Permanent link">&para;</a></h2>
<p>Is there the AutoConnectElements element named <strong>SUBMIT</strong> in the custom Web page? (case sensitive ignored) AutoConnect does not rely on the <code>input type=submit</code> element for the form submission and uses <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit">HTML form element submit</a> function instead. So, the submit function will fail if there is an element named 'submit' in the form. You can not use <strong>SUBMIT</strong> as the element name of AutoConnectElements in a custom Web page that declares the AutoConnectSubmit element.</p>
<h2 id="unable-to-change-any-macro-definitions-by-the-sketch"><i class="fa fa-question-circle"></i> Unable to change any macro definitions by the Sketch.<a class="headerlink" href="#unable-to-change-any-macro-definitions-by-the-sketch" title="Permanent link">&para;</a></h2>
<p>The various macro definitions that determine the configuration of AutoConnect cannot be redefined by hard-coding with Sketch. The compilation unit has a different AutoConnect library itself than the Sketch, and the configuration definitions in AutoConnectDefs.h are quoted in the compilation for AutoConnect only. For example, the following Sketch does not enable AC_DEBUG and does not change HTTP port also the menu background color:</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="background-color: #49483e"><span style="color: #75715e">#define AC_DEBUG                                    // No effect</span>
</span><span style="background-color: #49483e"><span style="color: #75715e">#define AUTOCONNECT_HTTPPORT    8080                // No effect</span>
</span><span style="background-color: #49483e"><span style="color: #75715e">#define AUTOCONNECT_MENUCOLOR_BACKGROUND  &quot;#696969&quot; // No effect</span>
</span><span style="color: #75715e">#include</span><span style="color: #f8f8f2"> </span><span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
<span style="color: #75715e">#include</span><span style="color: #f8f8f2"> </span><span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
<span style="color: #75715e">#include</span><span style="color: #f8f8f2"> </span><span style="color: #75715e">&lt;AutoConnect.h&gt;</span>

<span style="color: #f8f8f2">AutoConnect Portal;</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  Portal.begin();</span>
<span style="color: #f8f8f2">}</span>

<span style="color: #66d9ef">void</span><span style="color: #f8f8f2"> </span><span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">() {</span>
<span style="color: #f8f8f2">  Portal.handleClient();</span>
<span style="color: #f8f8f2">}</span>
</code></pre></div>
<p>To enable them, edit <code>AutoConnectDefs.h</code> as the library source code directly, or supply them as the external parameters using a build system like <a href="https://platformio.org/platformio-ide">PlatformIO</a> with <a href="https://docs.platformio.org/en/latest/projectconf/section_env_build.html?highlight=build_flags#build-flags"><code>platformio.ini</code></a>:</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #a6e22e">platform</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">espressif8266</span>
<span style="color: #a6e22e">board</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">nodemcuv2</span>
<span style="color: #a6e22e">board_build.f_cpu</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">160000000L</span>
<span style="color: #a6e22e">board_build.f_flash</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">80000000L</span>
<span style="color: #a6e22e">board_build.flash_mode</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">dio</span>
<span style="color: #a6e22e">board_build.filesystem</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #e6db74">littlefs</span>
<span style="background-color: #49483e"><span style="color: #a6e22e">build_flags</span><span style="color: #f8f8f2"> </span><span style="color: #f92672">=</span>
</span><span style="background-color: #49483e"><span style="color: #f8f8f2">  </span><span style="color: #a6e22e">-DAC_DEBUG</span>
</span><span style="background-color: #49483e"><span style="color: #f8f8f2">  </span><span style="color: #a6e22e">-DAUTOCONNECT_HTTPPORT</span><span style="color: #f92672">=</span><span style="color: #e6db74">8080</span>
</span><span style="background-color: #49483e"><span style="color: #f8f8f2">  </span><span style="color: #a6e22e">-DAUTOCONNECT_MENUCOLOR_BACKGROUND</span><span style="color: #f92672">=</span><span style="color: #e6db74">&#39;&quot;</span><span style="color: #75715e">#696969&quot;&#39;</span>
</span></code></pre></div>
<h2 id="unauthorize-error-without-prompting-the-login-dialog"><i class="fa fa-question-circle"></i> Unauthorize error without prompting the login dialog.<a class="headerlink" href="#unauthorize-error-without-prompting-the-login-dialog" title="Permanent link">&para;</a></h2>
<p>The custom web pages that require authentication will occur unauthorized error always without prompting the login dialog under the captive portal state on some OS. This is a captive portal restriction and expected behavior. The captive portal web browser is almost a complete web browser, but while the captive portal session restricts the response to <code>WWW-authenticate</code> requests. (In intrinsically, the captive portal is a mechanism for authentication in itself)</p>
<p>Once you exit from the captive portal session and connect SoftAP IP directly afresh, you can access custom web pages along with prompting a login dialog.</p>
<h2 id="uploaded-bin-via-ota-but-the-sketch-stopped-after-reboot"><i class="fa fa-question-circle"></i> Uploaded BIN via OTA, but the sketch stopped after reboot.<a class="headerlink" href="#uploaded-bin-via-ota-but-the-sketch-stopped-after-reboot" title="Permanent link">&para;</a></h2>
<p>Perhaps the current sketch as the uploader does not match the <strong>partition</strong> size of the BIN file to be uploaded. For example, if the current sketch (i.e. it performs OTA) is built with a partition table of <code>Default.csv</code> and the new BIN file to be updated is <code>min_spiffs.csv</code>.</p>
<p>Also, the file system of the uploader sketch and the uploaded sketch must be the same. If the file system of the uploader sketch is SPIFFS while the uploaded BIN file is LITTLEFS, file system initialization will fail.</p>
<h2 id="still-not-stable-with-my-sketch"><i class="fa fa-question-circle"></i> Still, not stable with my sketch.<a class="headerlink" href="#still-not-stable-with-my-sketch" title="Permanent link">&para;</a></h2>
<p>If AutoConnect behavior is not stable with your sketch, you can try the following measures.</p>
<h3 id="1-change-wifi-channel">1. Change WiFi channel<a class="headerlink" href="#1-change-wifi-channel" title="Permanent link">&para;</a></h3>
<p>Both ESP8266 and ESP32 can only work on one channel at any given moment. This will cause your station to lose connectivity on the channel hosting the captive portal. If the channel of the AP which you want to connect is different from the SoftAP channel, the operation of the captive portal will not respond with the screen of the AutoConnect connection attempt remains displayed. In such a case, please try to configure the <a href="apiconfig.html#channel">channel</a> with <a href="apiconfig.html#autoconnectconfig">AutoConnectConfig</a> to match the access point.</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #f8f8f2">AutoConnect portal;</span>
<span style="color: #f8f8f2">AutoConnectConfig config;</span>

<span style="color: #f8f8f2">config.channel </span><span style="color: #f92672">=</span><span style="color: #f8f8f2"> </span><span style="color: #ae81ff">3</span><span style="color: #f8f8f2">;     </span><span style="color: #75715e">// Specifies a channel number that matches the AP</span>
<span style="color: #f8f8f2">portal.config(config);  </span><span style="color: #75715e">// Apply channel configuration</span>
<span style="color: #f8f8f2">portal.begin();         </span><span style="color: #75715e">// Start the portal</span>
</code></pre></div>
<div class="admonition info">
<p class="admonition-title">Channel selection guide</p>
<p>Espressif Systems has released a <a href="https://www.espressif.com/sites/default/files/esp8266_wi-fi_channel_selection_guidelines.pdf">channel selection guide</a>.</p>
</div>
<h3 id="2-change-the-arduino-core-version">2. Change the arduino core version<a class="headerlink" href="#2-change-the-arduino-core-version" title="Permanent link">&para;</a></h3>
<p>I recommend change installed an arduino core version to the upstream when your sketch is not stable with AutoConnect on each board.</p>
<h4 id="with-esp8266-arduino-core">with ESP8266 arduino core<a class="headerlink" href="#with-esp8266-arduino-core" title="Permanent link">&para;</a></h4>
<p>You can select the <a href="http://lwip.wikia.com/wiki/LwIP_Wiki">lwIP</a> variant to contribute for the stable behavior. The <strong>lwIP v2 Lower memory</strong> option of Arduino IDE for core version 2.4.2 is based on the lwIP-v2. On the other hand, the core version 2.5.0 upstream is based on the lwIP-2.1.2 stable release.</p>
<p>You can select the option from Arduino IDE as <strong>Tool</strong> menu, if you are using ESP8266 core 2.5.0. It can be select <code>lwIP v2 Lower Memory</code> option. (not <code>lwIP v2 Lower Memory (no features)</code>) It is expected to improve response performance and stability.</p>
<h4 id="with-esp32-arduino-core">with ESP32 arduino core<a class="headerlink" href="#with-esp32-arduino-core" title="Permanent link">&para;</a></h4>
<p>The <a href="https://github.com/espressif/arduino-esp32">arduino-esp32</a> is still under development. It is necessary to judge whether the problem cause of the core or AutoConnect. Trace the log with the esp32 core and the AutoConnect debug option enabled for problem diagnosis and please you check the <a href="https://github.com/espressif/arduino-esp32/issues">issue of arduino-esp32</a>. The problem that your sketch possesses may already have been solved.</p>
<h3 id="3-turn-on-the-debug-log-options">3. Turn on the debug log options<a class="headerlink" href="#3-turn-on-the-debug-log-options" title="Permanent link">&para;</a></h3>
<p>To fully enable for the AutoConnect debug logging options, change the following two files.</p>
<p><i class="fas fa-angle-right"></i> AutoConnectDefs.h</p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #75715e">#define AC_DEBUG</span>
</code></pre></div>
<p><i class="fas fa-angle-right"></i> PageBuilder.h <sup id="fnref:3"><a class="footnote-ref" href="#fn:3">3</a></sup></p>
<div class="highlight" style="background: #272822"><pre style="line-height: 125%;"><span></span><code><span style="color: #75715e">#define PB_DEBUG</span>
</code></pre></div>
<div class="admonition info">
<p class="admonition-title">How to enable the AC_DEBUG, PB_DEBUG</p>
<p>See <a href="adothers.html#debug-print"><em>Debug Print</em></a> section, and <a href="faq.html#unable-to-change-any-macro-definitions-by-the-sketch"><em>one similarly</em></a> too.</p>
</div>
<h3 id="4-reports-the-issue-to-autoconnect-github-repository">4. Reports the issue to AutoConnect Github repository<a class="headerlink" href="#4-reports-the-issue-to-autoconnect-github-repository" title="Permanent link">&para;</a></h3>
<p>If you can not solve AutoConnect problems please report to <a href="https://github.com/Hieromon/AutoConnect/issues">Issues</a>. And please make your question comprehensively, not a statement. Include all relevant information to start the problem diagnostics as follows:<sup id="fnref:4"><a class="footnote-ref" href="#fn:4">4</a></sup></p>
<ul class="task-list">
<li class="task-list-item"><input type="checkbox" disabled/> Hardware module</li>
<li class="task-list-item"><input type="checkbox" disabled/> Arduino core version Including the upstream commit ID if necessary</li>
<li class="task-list-item"><input type="checkbox" disabled/> Operating System which you use</li>
<li class="task-list-item"><input type="checkbox" disabled/> Your smartphone OS and version (Especially for Android)</li>
<li class="task-list-item"><input type="checkbox" disabled/> Your AP information (IP, channel) if related</li>
<li class="task-list-item"><input type="checkbox" disabled/> lwIP variant</li>
<li class="task-list-item"><input type="checkbox" disabled/> Problem description</li>
<li class="task-list-item"><input type="checkbox" disabled/> If you have a STACK DUMP decoded result with formatted by the code block tag</li>
<li class="task-list-item"><input type="checkbox" disabled/> the Sketch code with formatted by the code block tag (Reduce to the reproducible minimum code for the problem)</li>
<li class="task-list-item"><input type="checkbox" disabled/> Debug messages output (Including arduino core)</li>
</ul>
<p>I will make efforts to solve as quickly as possible. But I would like you to know that it is not always possible.</p>
<p>Thank you.</p>
<div class="footnote">
<hr />
<ol>
<li id="fn:1">
<p>In this case, the underlying factor is mainly the bloat of ESP-IDF. This issue is also being discussed by many contributors of the Arduino core development community and efforts are underway to make a solution. Refs: <a href="https://github.com/espressif/arduino-esp32/issues/5630">espressif/arduino-esp32/issue#5630</a>&#160;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
</li>
<li id="fn:2">
<p>This issue has been resolved in ESP8266 core 2.5.0 and later.&#160;<a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text">&#8617;</a></p>
</li>
<li id="fn:3">
<p><code>PageBuilder.h</code> exists in the <code>libraries/PageBuilder/src</code> directory under your sketch folder.&#160;<a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 3 in the text">&#8617;</a></p>
</li>
<li id="fn:4">
<p>Without this information, the reproducibility of the problem is reduced, making diagnosis and analysis difficult.&#160;<a class="footnote-backref" href="#fnref:4" title="Jump back to footnote 4 in the text">&#8617;</a></p>
</li>
</ol>
</div>


  




                
              </article>
            </div>
          
          
        </div>
        
          <a href="#" class="md-top md-icon" data-md-component="top" hidden>
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
            Back to top
          </a>
        
      </main>
      
        <footer class="md-footer">
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
    <div class="md-copyright__highlight">
      Copyright &copy; 2018-2023 Hieromon Ikasamo
    </div>
  
  
    Made with
    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
      Material for MkDocs
    </a>
  
</div>
      
        <div class="md-social">
  
    
    
      
      
    
    <a href="https://github.com/Hieromon" target="_blank" rel="noopener" title="github.com" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
    </a>
  
    
    
      
      
    
    <a href="https://twitter.com/hieromon" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
    </a>
  
</div>
      
    </div>
  </div>
</footer>
      
    </div>
    <div class="md-dialog" data-md-component="dialog">
      <div class="md-dialog__inner md-typeset"></div>
    </div>
    
    <script id="__config" type="application/json">{"base": ".", "features": ["navigation.top"], "search": "assets/javascripts/workers/search.db81ec45.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
    
    
      <script src="assets/javascripts/bundle.a00a7c5e.min.js"></script>
      
        <script src="js/gifffer.min.js"></script>
      
    
  </body>
</html>